<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>


    <script>
        //一个函数有权访问另一个函数内的变量，闭包；       //函数体内的变量，保存在了内存当中；无法被垃圾回收机制进行回收；占用内存，在IE容易造成内存泄漏；

        // function fn() {
        //     var a = 10;
        //     return function f1() {
        //         return a;
        //     }
        // }
        // let x = fn()()
        // console.log(x)

        // function outer() {
        //     var date = "225";

        //     function inner(str) {
        //         console.log(str + date);
        //     }
        //     return inner;
        // }

        // let x = outer();
        // x("今天是:")
        // x("明天不是：")

        //函数体内的变量，保存在了内存当中；无法被垃圾回收机制进行回收；占用内存。
        // 垃圾回收机制   
        // function outer() {
        //     var num = 0;

        //     function inner(val) {
        //         num = val;
        //         console.log(num)
        //     }
        //     return inner
        // }

        // let x = outer();
        // x(111);
        // x(222);


        // var arr = [];
        // for (let i = 0; i < 3; i++) {
        //     arr[i] = function() {
        //         console.log(i)
        //     }
        // }

        // arr[0](); //3
        // arr[1](); //3
        // arr[2](); //3


        // var arr = [];
        // for (var i = 0; i < 3; i++) {
        //     arr[i] = (function(num) {
        //         // 0 1 2
        //         return function() {
        //             console.log(num)
        //         }

        //     })(i)
        // }

        // arr[0](); //0
        // arr[1](); //1
        // arr[2](); //2

        // function fn() {
        //     console.log(1)
        // }

        // fn()
        // fn()
        // fn()

        // (function() {
        //     console.log(1)
        // })()
    </script>
</body>

</html>